Data processing systems can include various components that interact with each other to process an instruction. One component may be a surrogate memory accessing agent that can manage values stored in physical memory. An example of a surrogate memory accessing agent is a direct memory access (DMA) channel. A surrogate memory accessing agent may be used to access memory, such as for performing a calculation on a value stored in memory or change the location of a value in physical memory by causing the value to be copied or moved to a second location in physical memory. For example, a surrogate memory accessing agent can include two registers. One register can store a data value that is the physical address of the memory location of the memory value to be moved or copied. The other register can store a data value that is the physical address of the memory location to which the memory value is moved or copied. Subsequently, such as when the registers are filled with data values, the surrogate memory accessing agent can provide the data values from the registers to cause the memory value in a physical memory location to be moved or copied.
Surrogate memory accessing agents are configured by software executed by a processor, such as by storing, in a register of a surrogate memory accessing agent, a data value that is the physical address of a location in memory to be accessed. The physical address represented by the data value is received by the surrogate memory accessing agent from a processor operating in a privileged mode and executing a STORE instruction. The STORE instruction specifies a physical address represented by a data value to be stored in a register identified by a specified address of the register. The processor operates in a privileged mode to access, obtain, and write the physical address. A processor operating in a non-privileged mode does not have access to physical addresses to protect the integrity of the physical addresses.
If the processor is operating in a non-privileged mode, it first suspends execution of the non-privileged process and switches to a privileged mode. Once in the privileged mode, the processor then determines the physical address of the location in memory to be accessed and that is represented by the data value. The data value representing the physical address is stored in a register of the surrogate memory accessing agent.
Suspending execution may introduce inefficiencies in processing and consume power. Accordingly, systems and processes for configuring surrogate memory accessing agents are desirable that can decrease processing delays, power consumption, and/or otherwise provide more efficient processing. Furthermore, it is desirable to configure surrogate memory accessing agents without requiring a processor to operate in a privileged mode, but protect physical addresses from being exposed to operations in non-privileged modes.